package com.ahwei.product.convert;

import com.ahwei.product.api.dto.ProductDto;
import com.ahwei.product.entity.Product;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * <p>
 *  定义dto和entity之间的转换规则
 * </p>
 *
 * @author ahwei
 * @since 2022-05-25
 */
@Mapper
public interface ProductConvert {

    /**
     * 获得接口实例
     */
    ProductConvert INSTANCE = Mappers.getMapper(ProductConvert.class);


//    @Mappings({
//            // 用于两边属性名不同
//            @Mapping(source = "id", target = "id"),
//            // 用于日期类型
//            @Mapping(source = "now", target = "now", dateFormat = "yyyy-MM-dd HH:mm:ss")
//    })

    /**
     * entity转dto
     * @param product ·
     * @return ·
     */
    ProductDto entity2dto(Product product);



    /**
     *  dto转entity
     * @param productDto ·
     * @return ·
     */
    Product dto2entity(ProductDto productDto);



    /**
     * po列表转dto列表
     * @param productList ·
     * @return ·
     */
    List<ProductDto> entityList2dtoList(List<Product> productList);



    /**
     * dto列表转po列表
     * @param productDtoList ·
     * @return ·
     */
    List<Product> dtoList2entityList(List<ProductDto> productDtoList);
}
